<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>FactoryUtils (Apache Commons Collections 4.0 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="FactoryUtils (Apache Commons Collections 4.0 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FactoryUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/commons/collections4/FunctorException.html" title="class in org.apache.commons.collections4"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/commons/collections4/FactoryUtils.html" target="_top">Frames</a></li>
<li><a href="FactoryUtils.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.collections4</div>
<h2 title="Class FactoryUtils" class="title">Class FactoryUtils</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.collections4.FactoryUtils</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">FactoryUtils</span>
extends <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block"><code>FactoryUtils</code> provides reference implementations and utilities
 for the Factory functor interface. The supplied factories are:
 <ul>
 <li>Prototype - clones a specified object
 <li>Reflection - creates objects using reflection
 <li>Constant - always returns the same object
 <li>Null - always returns null
 <li>Exception - always throws an exception
 </ul>
 All the supplied factories are Serializable.</div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>3.0</dd>
<dt><span class="strong">Version:</span></dt>
  <dd>$Id: FactoryUtils.java 1477779 2013-04-30 18:55:24Z tn $</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#constantFactory(T)">constantFactory</a></strong>(T&nbsp;constantToReturn)</code>
<div class="block">Creates a Factory that will return the same object each time the factory
 is used.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#exceptionFactory()">exceptionFactory</a></strong>()</code>
<div class="block">Gets a Factory that always throws an exception.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#instantiateFactory(java.lang.Class)">instantiateFactory</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;classToInstantiate)</code>
<div class="block">Creates a Factory that can create objects of a specific type using
 a no-args constructor.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#instantiateFactory(java.lang.Class, java.lang.Class[], java.lang.Object[])">instantiateFactory</a></strong>(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;classToInstantiate,
                  <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;[]&nbsp;paramTypes,
                  <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)</code>
<div class="block">Creates a Factory that can create objects of a specific type using
 the arguments specified to this method.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#nullFactory()">nullFactory</a></strong>()</code>
<div class="block">Gets a Factory that will return null each time the factory is used.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../org/apache/commons/collections4/FactoryUtils.html#prototypeFactory(T)">prototypeFactory</a></strong>(T&nbsp;prototype)</code>
<div class="block">Creates a Factory that will return a clone of the same prototype object
 each time the factory is used.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="exceptionFactory()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exceptionFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;exceptionFactory()</pre>
<div class="block">Gets a Factory that always throws an exception.
 This could be useful during testing as a placeholder.</div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the type that the factory creates</dd>
<dt><span class="strong">Returns:</span></dt><dd>the factory</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/ExceptionFactory.html" title="class in org.apache.commons.collections4.functors"><code>ExceptionFactory</code></a></dd></dl>
</li>
</ul>
<a name="nullFactory()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nullFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;nullFactory()</pre>
<div class="block">Gets a Factory that will return null each time the factory is used.
 This could be useful during testing as a placeholder.</div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the "type" of null object the factory should return.</dd>
<dt><span class="strong">Returns:</span></dt><dd>the factory</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/ConstantFactory.html" title="class in org.apache.commons.collections4.functors"><code>ConstantFactory</code></a></dd></dl>
</li>
</ul>
<a name="constantFactory(java.lang.Object)">
<!--   -->
</a><a name="constantFactory(T)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>constantFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;constantFactory(T&nbsp;constantToReturn)</pre>
<div class="block">Creates a Factory that will return the same object each time the factory
 is used. No check is made that the object is immutable. In general, only
 immutable objects should use the constant factory. Mutable objects should
 use the prototype factory.</div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the type that the factory creates</dd><dt><span class="strong">Parameters:</span></dt><dd><code>constantToReturn</code> - the constant object to return each time in the factory</dd>
<dt><span class="strong">Returns:</span></dt><dd>the <code>constant</code> factory.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/ConstantFactory.html" title="class in org.apache.commons.collections4.functors"><code>ConstantFactory</code></a></dd></dl>
</li>
</ul>
<a name="prototypeFactory(java.lang.Object)">
<!--   -->
</a><a name="prototypeFactory(T)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>prototypeFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;prototypeFactory(T&nbsp;prototype)</pre>
<div class="block">Creates a Factory that will return a clone of the same prototype object
 each time the factory is used. The prototype will be cloned using one of these
 techniques (in order):
 <ul>
 <li>public clone method
 <li>public copy constructor
 <li>serialization clone
 <ul></div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the type that the factory creates</dd><dt><span class="strong">Parameters:</span></dt><dd><code>prototype</code> - the object to clone each time in the factory</dd>
<dt><span class="strong">Returns:</span></dt><dd>the <code>prototype</code> factory, or a <a href="../../../../org/apache/commons/collections4/functors/ConstantFactory.html#NULL_INSTANCE"><code>ConstantFactory.NULL_INSTANCE</code></a> if
 the <code>prototype</code> is <code>null</code></dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the prototype cannot be cloned</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/PrototypeFactory.html" title="class in org.apache.commons.collections4.functors"><code>PrototypeFactory</code></a></dd></dl>
</li>
</ul>
<a name="instantiateFactory(java.lang.Class)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>instantiateFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;instantiateFactory(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;classToInstantiate)</pre>
<div class="block">Creates a Factory that can create objects of a specific type using
 a no-args constructor.</div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the type that the factory creates</dd><dt><span class="strong">Parameters:</span></dt><dd><code>classToInstantiate</code> - the Class to instantiate each time in the factory</dd>
<dt><span class="strong">Returns:</span></dt><dd>the <code>reflection</code> factory</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the classToInstantiate is null</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/InstantiateFactory.html" title="class in org.apache.commons.collections4.functors"><code>InstantiateFactory</code></a></dd></dl>
</li>
</ul>
<a name="instantiateFactory(java.lang.Class, java.lang.Class[], java.lang.Object[])">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>instantiateFactory</h4>
<pre>public static&nbsp;&lt;T&gt;&nbsp;<a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4">Factory</a>&lt;T&gt;&nbsp;instantiateFactory(<a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;classToInstantiate,
                                <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;[]&nbsp;paramTypes,
                                <a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;args)</pre>
<div class="block">Creates a Factory that can create objects of a specific type using
 the arguments specified to this method.</div>
<dl><dt><span class="strong">Type Parameters:</span></dt><dd><code>T</code> - the type that the factory creates</dd><dt><span class="strong">Parameters:</span></dt><dd><code>classToInstantiate</code> - the Class to instantiate each time in the factory</dd><dd><code>paramTypes</code> - parameter types for the constructor, can be null</dd><dd><code>args</code> - the arguments to pass to the constructor, can be null</dd>
<dt><span class="strong">Returns:</span></dt><dd>the <code>reflection</code> factory</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the classToInstantiate is null</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the paramTypes and args don't match</dd>
<dd><code><a href="http://download.oracle.com/javase/6/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></code> - if the constructor doesn't exist</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../org/apache/commons/collections4/functors/InstantiateFactory.html" title="class in org.apache.commons.collections4.functors"><code>InstantiateFactory</code></a></dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FactoryUtils.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/commons/collections4/Factory.html" title="interface in org.apache.commons.collections4"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../org/apache/commons/collections4/FunctorException.html" title="class in org.apache.commons.collections4"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/commons/collections4/FactoryUtils.html" target="_top">Frames</a></li>
<li><a href="FactoryUtils.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2001&#x2013;2013 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
